---
title: SAIF.Services.Printing overview
summary: High-level purpose, scope, and responsibilities for this library.
status: draft
owner: SAIF Case Management
last_reviewed: 2026-08-21
library: SAIF.Services.Printing
reference_type: embedded
---

# SAIF.Services.Printing overview

> **Documentation context:** Front-End Application Component
> **Documented via:** Legal (`Legal\Legal.vbproj`)

`SAIF.Services.Printing` is a VB.NET service-facade library that wraps two external document-related SOAP services — xPression Design ("xPresso") for document generation, printing, and distribution, and SQL Server Reporting Services (SSRS) for report execution — and exposes a higher-level "letter"/report abstraction built on top of the xPression facade. It contains no UI and no BOF business-object types of its own.

## Purpose
- Provide a single, class-based wrapper (`clsPrint`) around the xPression Design "xPresso" SOAP service so callers can preview, print, publish, and distribute generated documents without talking to the SOAP proxy directly.
- Provide a separate wrapper (`clsRSPrint`) around the SSRS `ReportExecutionService` SOAP service for loading, parameterizing, and rendering reports defined directly on an SSRS report server.
- Offer a template-method "letter"/report abstraction (`Reporting.IReport` / `Reporting.ReportBase`) that lets concrete report/letter subclasses build an XML document and then render/print/distribute/save it consistently through an internally owned `clsPrint` instance.
- Provide a bespoke XML-to-xPression-markup serializer (`Reporting.XDesignXDocument` / `Reporting.XDesignXElement`) that renders XML trees into the proprietary tag format expected by xPression Design templates, with primary/foreign "key" propagation.
- Support asynchronous document distribution via MSMQ, as an alternative to synchronous SOAP distribution, including transaction lifecycle management.

## Responsibilities
- Wrap the xPression Design "xPresso" SOAP service (`clsGenerate`) to preview, print, publish, and distribute documents, via `clsPrint`.
- Wrap the SSRS `ReportExecutionService` SOAP service to load, parameterize, and render reports, via `clsRSPrint`, independently of the xPression facade.
- Orchestrate report/letter generation through the `Reporting.ReportBase` template-method base class.
- Serialize XML document trees into xPression's proprietary markup via `Reporting.XDesignXDocument`/`Reporting.XDesignXElement`.
- Route document distribution either synchronously (direct SOAP call) or asynchronously via an MSMQ queue (`documentMSMQPath`).

## Key components
- `clsPrint`: Stateful wrapper around the `xpresso.clsGenerate` SOAP proxy; owns preview/print/publish/distribute operations and the MSMQ async-distribution path.
- `clsRSPrint`: Separate facade over SSRS `ReportExecutionService`, used for reports rendered directly from an SSRS report path.
- `Reporting.ReportBase` / `Reporting.IReport`: Template-method base for concrete report/letter types; orchestrates `Create → Render → Print/Distribute/Save` using an internally owned `clsPrint` instance.
- `Reporting.XDesignXDocument` / `Reporting.XDesignXElement`: XML document/element wrappers that render into xPression's proprietary markup format.
- `xpresso.clsGenerate` / `SharepointReporting.ReportExecutionService`: Auto-generated SOAP client proxies (Web References) for the external xPression Design and SSRS services.

## Related documentation
- [Index](index.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [Configuration](configuration.md)
- [API reference](api/index.md)

## Sources
- `SAIF.Services.Printing\clsPrint.vb`
- `SAIF.Services.Printing\clsRSPrint.vb`
- `SAIF.Services.Printing\Reporting\ReportBase.vb`
- `SAIF.Services.Printing\Reporting\IReport.vb`
- `SAIF.Services.Printing\Reporting\XDesignXDocument.vb`
- `SAIF.Services.Printing\Reporting\XDesignXElement.vb`
- `SAIF.Services.Printing\SAIF.Services.Printing.vbproj`
